package version;

import javax.imageio.stream.ImageInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 封装
 * Mysql封装工具类:链接对应的数据库
 * 1.Mysql与Oracle具备:url、username、password
 *  所有数据库公用的定义为属性
 * 2.getParam()获取参数方法:链接成功数据库操作
 *  2.1  外置文件【url、账号、密码】统一配置文件中【形式:键值对】
 *     db_mysql.properties
 */
public class Mysql {
    //定义数据库基本属性：私有化
    private static String url;
    private static String username;
    private static String password;
    //2.定义方法:链接成功数据库     文件路径传入
    public static void getParam(String fileName) throws IOException {
        //3.测试公寓类---链接成功数据库【外置文件--配置Mysql基本信息】

        //2.1读取db_mysql.properties文件--Properties类读取文件键和值
        Properties p=new Properties();
        //2.1[补充2]低级流--搬运数据--传入fileName
        //Mysql.class  表示当前mysql类的class对象
        //getClassLoader() 获取当前类的加载器【加载器：根据路径执行配置文件】
        //理解:图书馆---mysql书籍区域----找管理员----找到对应【db_mysql.properties】书籍
        //getResourceAsStream() 通过类的加速器，找到对应的文件，配合读取
        InputStream fis=
        Mysql.class.getClassLoader().getResourceAsStream(fileName);
        //2.1[补充1]Properties类提供load()方法：必须传入流--低级流--搬运数据
        p.load(fis);
        //2.2 从db_mysql.properties读取的键值对信息
        //Properties类提供方法getProperty("键") 通过键找值
        //赋值给当前mysql的数据库基本信息【url、用户、密码】
        url=p.getProperty("url");
        username=p.getProperty("username");
        password=p.getProperty("password");
        //2.3打桩 测试是否链接成功   文件路径传入
        System.out.println("数据库基本信息:"+username+url+password);
    }

    public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
        Mysql.getParam("db_mysql.properties");
        //作业2:参考Mysql工具类---编写Oracle工具类
        //目的:工具链接成功不同的数据库
        //作业3:【增加一条操作--mi库--book】 查询
        //JDBC:Connection、Statement|    ResultSet
        //1.创建数据库链接操作
        Class.forName("com.mysql.jdbc.Driver");
        Connection con= DriverManager.getConnection(url,username,password);
        //2.执行sql
        //增删改  executeUpdate()  返回成功几条记录
        //String sql="insert into book values(6,'余华','活着',35,'2023',90,'否')";
        Statement st=con.createStatement();
//        int rows=st.executeUpdate(sql);
//        System.out.println("book表添加了"+rows);
        String sql="select * from book";
        ResultSet rs=st.executeQuery(sql);

        while(rs.next()){
            int id=rs.getInt("id");
            String author=rs.getString("author");
            String name=rs.getString("name");

            System.out.println("mi表的所有数据:"+id+name+author);

        }
        rs.close();
        st.close();
        con.close();
    }
}
